const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('./blog.db');

const initDb = () => {
    return new Promise((resolve, reject) => {
        db.serialize(() => {
            // 创建 users 表
            db.run(`CREATE TABLE IF NOT EXISTS users (
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                username TEXT UNIQUE NOT NULL,
                password_hash TEXT NOT NULL
            )`, (err) => {
                if (err) return reject(err);
            });

            // 创建 posts 表
            db.run(`CREATE TABLE IF NOT EXISTS posts (
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                title TEXT NOT NULL,
                content_markdown TEXT NOT NULL,
                created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
                updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
            )`, (err) => {
                if (err) return reject(err);
            });

            // 创建 settings 表，并在其回调中解决Promise
            // 这是确保所有表都创建完毕的关键
            db.run(`CREATE TABLE IF NOT EXISTS settings (
                key TEXT PRIMARY KEY,
                value TEXT
            )`, (err) => {
                if (err) return reject(err);
                // 只有在最后一个表创建操作的回调中，我们才能确保所有操作已完成。
                console.log("Database tables checked/created successfully.");
                resolve();
            });
        });
    });
};

module.exports = { db, initDb };